home *** CD-ROM | disk | FTP | other *** search
/ Ham Radio 2000 / Ham Radio 2000.iso / ham2000 / tcp_ip / os2 / pmnos11s / junk.c < prev    next >
C/C++ Source or Header  |  1993-07-30  |  2KB  |  83 lines

  1. /* Read through FTPUSERS looking for user record
  2.  * Returns line which matches username, or NULLCHAR when no match.
  3.  * Each of the other variables must be copied before freeing the line.
  4.  */
  5. char *
  6. userlookup(username,password,directory,permission,ip_address)
  7. char *username;
  8. char **password;
  9. char **directory;
  10. int   *permission;
  11. int32 *ip_address;
  12. {
  13.     FILE *fp;
  14.     char *buf;
  15.     char *cp;
  16. /* Subroutine for logging in the user whose name is name and password is pass.
  17.    The buffer path should be long enough to keep a line from the userfile.
  18.    If pwdignore is true, the password check will be overridden.
  19.    The return value is the permissions field or -1 if the login failed.
  20.    Path is set to point at the path field, and pwdignore will be true if no
  21.    particular password was needed for this user.
  22.     if((fp = fopen(Userfile,READ_TEXT)) == NULLFILE)
  23.         /* Userfile doesn't exist */
  24.         return NULLCHAR;
  25.  
  26.     buf = mallocw(128);
  27.     while ( fgets(buf,128,fp) != NULLCHAR ){
  28.         if(*buf == '#')
  29.             continue;    /* Comment */
  30.  
  31.         if((cp = strchr(buf,' ')) == NULLCHAR)
  32.             /* Bogus entry */
  33.             continue;
  34.         *cp++ = '\0';        /* Now points to password */
  35.  
  36.         if( stricmp(username,buf) == 0 )
  37.             break;        /* Found user */
  38.     }
  39.     if(feof(fp)){
  40.         /* username not found in file */
  41.         fclose(fp);
  42.         free(buf);
  43.         return NULLCHAR;
  44.     }
  45.     fclose(fp);
  46.  
  47.     if ( password != NULL )
  48.         *password = cp;
  49.  
  50.     /* Look for space after password field in file */
  51.     if((cp = strchr(cp,' ')) == NULLCHAR) {
  52.         /* Invalid file entry */
  53.         free(buf);
  54.         return NULLCHAR;
  55.     }
  56.     *cp++ = '\0';    /* Now points to directory field */
  57.  
  58.     if ( directory != NULL )
  59.         *directory = cp;
  60.  
  61.     if((cp = strchr(cp,' ')) == NULLCHAR) {
  62.         /* Permission field missing */
  63.         free(buf);
  64.         return NULLCHAR;
  65.     }
  66.     *cp++ = '\0';    /* now points to permission field */
  67.  
  68.     if ( permission != NULL )
  69.         *permission = (int)strtol( cp, NULLCHARP, 0 );
  70.  
  71.     if((cp = strchr(cp,' ')) == NULLCHAR) {
  72.         /* IP address missing */
  73.         if ( ip_address != NULL )
  74.             *ip_address = 0L;
  75.     } else {
  76.         *cp++ = '\0';    /* now points at IP address field */
  77.         if ( ip_address != NULL )
  78.             *ip_address = resolve( cp );
  79.     }
  80.     return buf;
  81. }
  82.  
  83.